package com.lovo.test;

import java.util.Arrays;

public class Serpentine {
    public static void main(String[] args) {
        Serpentine s = new Serpentine(); //创建对象实例

        s.camelToSnake("MyName");  //驼峰实参

        s.snakeToCamel("my_name"); //蛇形实参

        s.formatCurrency("1234567.03");  //转型实参
    }


    public Serpentine() {

    }

    //2. 编写一个函数，将驼峰命名法(Camel Case)的单词转换为蛇形命名法(Snake Case)的单词。
    public String camelToSnake(String a) {  //接收参数MyName
        String str = " "; //创建字符串
        for (int i = 0; i < a.length(); i++) {  //循环
            char num = a.charAt(i); //把字符串字符，循环赋值给char字符类型num
            if (num > 'A' && num < 'Z' && i != 0) {  //判断对比，如果是小写字母的字符，并且不是下标首位
                str += "_" + num;                   //把小写字母字符加上"_"，拼接到str字符串中、

            } else {
                str += num;  //把大写字母拼接到Str字符串中
            }


        }

        System.out.println("MyName转换为蛇形为：" + Arrays.toString(new String[]{str})); // 新建String数组环绕打印拼接str字符串

        return str;
    }


    //3. 编写一个函数，将蛇形命名法的单词转换为驼峰命名法的单词。
    public String snakeToCamel(String b) {   //接收参数my_name
        String str = "";   //创建字符串
        String[] arr = b.split("_"); //分割字符，遇到_分割, 把字符my,name分割两半，形成下标长度为1的两个数组下标。
//        System.out.println(Arrays.toString(arr));
        for (int i = 0; i < arr.length; i++) {  //循环字符串数组
            if (i != 0) {   // 判断下标不能是0，不更改my的字符下标。
                char[] num = arr[i].toCharArray();//把字符串下标name赋给num的char数组中
//                System.out.println(Arrays.toString(num));
                num[0] = (char) (num[0] - 32);  // 把首个下标字母n用ascii码转换成大写，重新赋值到数组首个下标中
                arr[1] = new String(num); //把修改过的字符串，新建String类型，重新拼接赋值到arr[1]的下标中

            }
            str += arr[i];   //把下标0-1的字符拼接赋值到str字符串中

        }
        System.out.println("my_name转换为驼峰：" + Arrays.toString(new String[]{str})); //数组环绕打印
        return str;
    }

    //4. 编写一个函数，将货币数字以千分位的方式表示。
    public String formatCurrency(String c) {  //接收参数1234567.03
        String str = ""; //创建字符串
        String num = c.substring(0,c.indexOf("."));//截取123456
        String num2 = c.substring(str.indexOf("."));//截取.03
        int x = num.length() % 3;



        return str;
    }
}
